<template>
  <div class="app-container">
    <upload-excel :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import { reqImportEmployee } from '@/api/employees'
import moment from 'moment'
export default {
  data() {
    return {

    }
  },
  computed: {
    type() {
      return this.$route.query.type
    }
  },
  methods: {
    // 上传之前的处理函数 预校验 文件类型 和 文件大小的
    beforeUpload(file) { // file就是我们上传的文件对象
      // console.log(file)
      const isLt1M = file.size / 1024 / 1024 < 1 // 预校验上传的文件大小 1M
      if (isLt1M) { // 如果小于1M true 直接上传
        return true
      }

      this.$message({
        message: '上传的文件要在1M之内',
        type: 'warning'
      })
      return false // 不小于1M  return false 阻止上传
    },
    // 上传成功的处理函数
    async handleSuccess({ results, header }) {
      // console.log(header) // 上传的excel表格的标题
      // console.log(results) // 上传的excel表格的每一行的内容, 存储在一个数组中,每一行的数据存储在了对象中
      // 1. 发送请求之前, 将 中文key 转换成英文的键才可以  入职日期-- timeOfEntry
      if (this.type === 'people') {
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber'
        }
        const resArr = results.map(item => { // item是每一个数据的对象
          const obj = {}
          for (const k in item) { // k是中文的键
            const englishKey = userRelations[k] // 英文的键
            // console.log(englishKey)
            if (['timeOfEntry', 'correctionTime'].includes(englishKey)) {
              // obj[englishKey] = moment(this.formatDate(item[k], '-')).add(1, 'days').format('YYYY-MM-DD')
              obj[englishKey] = this.formatDate(item[k], '-')

            // 但是处理格式好了 但是会丢失一天 (excel转过来之后 会少43s) -- 作业  https://blog.csdn.net/HuangZeJunXXX/article/details/110724291
            } else {
              obj[englishKey] = item[k]
            }
          }
          return obj // 将obj 收集到一个新数组中
        })
        // 1. 如果你代理的地址是线上地址 注意上传的用户手机号不要重复
        // 2. 聘用形式  处理不详 字段 会报错
        // 3. 部门展示的优化---因为上传的表格 没有写部门, 展示的是空的, 手动处理一下
        // resArr.forEach(item => {
        //   item.departmentName = '暂未分配'
        // })
        // console.log(resArr) // 处理成英文格式的数据  还是数组保对象的格式
        // 2.发送请求 携带批量导入的员工的数据

        const { message } = await reqImportEmployee(resArr)
        // 3.提示用户
        this.$message.success(message)
        // 4.回到员工列表页面 back()  go(-1)
        this.$router.back()
      }

      if (this.type === 'attendance') { // 审批的导入

      }
      if (this.type === 'salarys') { // 工资的导入

      }
    },
    // 处理excel表格导入时间的问题的方法  1970 1900
    formatDate(num, format) {
      num = Number(num)	// 强制类型转化，以防传来的值是字符串
      let millisecond = 0	// 转化后的毫秒数
      if (num > 60) {
        millisecond = (num - 25569) * 60 * 60 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 60 * 60 * 24 * 1000
      }
      const date = new Date(millisecond)	// 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const mm = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
      const dd = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
      return yy + format + mm + format + dd	// 返回格式化后的日期
    }
  }
}
</script>
